Spark SQL执行流程

1 重要数据结构

  • Tree:语法树。
  • Rule:语法树规则

调用sql的explain()方法可以查看执行计划。

2 执行流程

执行流程

解析流程

(1) Parser

  • SparkSqlParser使用第三方语法解析工具ANTLR4解析为语法树。

    Spark 1.x使用Scala原生的Parser语法解析器,Spark 2.x使用可定制的ANTLR4。

  • SparkSqlParser通过AstBuilder遍历语法树,将节点转换为Catalyst优化器系统中的类型,形成Unresolved Logical Plan抽象语法树。所有类型都集成了TreeNode特质。

(2) Analyzer

  • 借助Catalog表信息,确定抽象语法树中不确定的属性和关系。如解析表名、模式等。
  • 应用Rule到语法树,转换为Resolved Logical Plan。没有动作操作,不执行后续步骤。

(3) Optimizer

SQL优化,如谓词下推、列值裁剪和常量累加等。形成Optimized Logical Plan。

(4) SparkPlanner

应用策略,转化为数据的绑定和操作,形成Physical Plan

(5) PrepareForExecution

主要是插入shuffle操作和内部Row格式转换,形成Executable Physical Plan。

(6) Execute

调用SparkPlan的execute()执行计算,递归触发整棵树的计算。

参考资料

[Spark SQL] 主要执行流程

sparksql执行流程分析